package entretenimiento.web;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import entretenimiento.excepcion.DAOExcepcion;
import entretenimiento.modelo.Club;
import entretenimiento.excepcion.DAOExcepcion;
import entretenimiento.modelo.Detalle_dia_Campo;
import entretenimiento.modelo.Juego;
import entretenimiento.modelo.Servicio;
import entretenimiento.modelo.Solicitud_dia_Campo;
import entretenimiento.modelo.Usuario;
import entretenimiento.negocio.GestionClub;
import entretenimiento.negocio.GestionJuegos;
import entretenimiento.negocio.GestionServicio;
import entretenimiento.negocio.GestionSolicitudDiaCampo;


@Controller
public class DiaCampoController {
	
	int IdDiaCampo =  0;

	@RequestMapping(value = "/Cotizacion", method = RequestMethod.GET)	
	protected ModelAndView inicio(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		
		Map<String, Object> objetos = new HashMap<String, Object>();
		GestionSolicitudDiaCampo negocio = new GestionSolicitudDiaCampo();		
		Solicitud_dia_Campo entidad = new Solicitud_dia_Campo();
							
		try {
			
			Collection<Club> lisClub = null;
			GestionClub negClub = new GestionClub();						
			
			/*for (Detalle_dia_Campo o : entidad.getLisDetalle_Dia_Campo()){
				o.getNuSecuencia()
			
			}*/
			
			Usuario user = new Usuario();
			user = (Usuario)request.getSession().getAttribute("USUARIO_ACTUAL");
			
			entidad = negocio.lisCotizacion(IdDiaCampo);		
			objetos.put("FECHA",entidad.getFeDiaCampo());
			objetos.put("NUPERSONA", entidad.getNuTotalPersonas());
			objetos.put("CBOCLUB", entidad.getCoClub());
			objetos.put("NOMCLUB", entidad.getNoClub());			
			objetos.put("IMPORTE", entidad.getSsImporteTotal());			
			objetos.put("DETALLE", entidad.getLisDetalle_Dia_Campo());
			objetos.put("NOMBREUSUARIO", user);
			objetos.put("CLUB", lisClub);
			
		} catch (DAOExcepcion e) {
			return new ModelAndView("/error", "mensaje", e.getMessage());
		}
		return new ModelAndView("Cotizacion","VALOR",objetos);
	}
	
	@RequestMapping(value = "/DiaCampo", method = RequestMethod.GET)	
	protected ModelAndView llenarCombo(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		
		Map<String, Object> objetos = new HashMap<String, Object>();
		
		//club
		Collection<Club> lisClub = null;
		GestionClub negocio = new GestionClub();		
		lisClub = negocio.listar();
		
		//Servicio
		Collection<Servicio> lisServicio = null;
		GestionServicio neg = new GestionServicio();
		lisServicio = neg.listar();
			
		//Juego
		Collection<Juego> lisJuego = null;
		GestionJuegos negJuego = new GestionJuegos();
		lisJuego = negJuego.listar();
		
		Usuario user = new Usuario();
		user = (Usuario)request.getSession().getAttribute("USUARIO_ACTUAL");
		
		objetos.put("SUCURSAL", lisClub);
		objetos.put("SERVICE", lisServicio);
		objetos.put("GAME", lisJuego);
		objetos.put("NOMBREUSUARIO", user);
		
		return new ModelAndView("DiaCampo","OBJETOS",objetos);
	}
	
	@RequestMapping(value = "/mensajeAct", method = RequestMethod.POST)	
	protected ModelAndView actualizarCotizacion(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
	
		ModelAndView mav = new ModelAndView();
		
		GestionSolicitudDiaCampo negocio = new GestionSolicitudDiaCampo();
		Collection<Detalle_dia_Campo> lisDetalle = new ArrayList<Detalle_dia_Campo>();
				
		String fecha = request.getParameter("txtFecha");
		int per = Integer.parseInt(request.getParameter("txtTotalPersonas"));
		
		String[] arrNuSecuencia = request.getParameterValues("colSecuencia");
		String[] arrComentario = request.getParameterValues("colComentario");
		String[] arrPersona = request.getParameterValues("colPersona");
		String[] arrPrecio = request.getParameterValues("colPrecio");
		
		double tot = 0;
		for(int i=0; i < arrNuSecuencia.length ; i++){
			Detalle_dia_Campo entDetalle = new Detalle_dia_Campo();
			entDetalle.setCoDiaCampo(IdDiaCampo);
			
			entDetalle.setNuPersona(Integer.parseInt(arrPersona[i]));
			double persona = Double.parseDouble(arrPersona[i]);
			entDetalle.setTxComentario(arrComentario[i]);
			double precio = Double.parseDouble(arrPrecio[i]);
			double importe = persona * precio;
			entDetalle.setSsImporte(importe);
			entDetalle.setNuSecuencia(Integer.parseInt(arrNuSecuencia[i]));					
			tot = tot + importe;
			lisDetalle.add(entDetalle);
		}
					
		try {
			negocio.actualizar(IdDiaCampo, fecha, per, tot, lisDetalle);
		} catch (DAOExcepcion e) {
			return new ModelAndView("/error", "mensaje", e.getMessage());
		}
					
		mav.setViewName("redirect:mensajeAct.html");
		return mav;
		
	}
	
	@RequestMapping(value = "/confirmacion", method = RequestMethod.POST)	
	protected ModelAndView registrarCotizacion(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		
		ModelAndView mav = new ModelAndView();
		 
		Solicitud_dia_Campo entCampo = new Solicitud_dia_Campo();
		Collection<Detalle_dia_Campo> lisDetalle = new ArrayList<Detalle_dia_Campo>();
		GestionSolicitudDiaCampo negocio = new GestionSolicitudDiaCampo();	
		GestionServicio negServicio = new GestionServicio();
		GestionJuegos negJuego = new GestionJuegos();
		
		//SESSION
		String idUsuario =String.valueOf(request.getSession().getAttribute("CODUSUARIO"));

		entCampo.setCoResponsable(Integer.parseInt(idUsuario));//*****	
		entCampo.setFeDiaCampo(request.getParameter("txtFecha"));
		entCampo.setNuTotalPersonas(Integer.parseInt(request.getParameter("txtTotalPersonas")));
		entCampo.setCoClub(Integer.parseInt(request.getParameter("cboClub")));
		
		String[] arrCodServicio = request.getParameterValues("colCodServicio");
		String[] arrSNuPersona = request.getParameterValues("colSNuPersona");
		String[] arrSDescripcion = request.getParameterValues("colSDescripcion"); 
		
		String[] arrCodJuego = request.getParameterValues("colCodJuego");
		String[] arrJNuPersona = request.getParameterValues("colJNuPersona");
		String[] arrJDescripcion = request.getParameterValues("colJDescripcion"); 
		
		double tot = 0;
		for(int i=0; i < arrCodServicio.length ; i++){
			Detalle_dia_Campo entDetalle = new Detalle_dia_Campo();
			entDetalle.setNuPersona(Integer.parseInt(arrSNuPersona[i]));
			double persona = entDetalle.getNuPersona();
			entDetalle.setTxComentario(arrSDescripcion[i]);
			double precio = negServicio.getPrecioServicio(Integer.parseInt(arrCodServicio[i]));
			entDetalle.setSsPrecioPersona(precio);
			entDetalle.setCoServicio(Integer.parseInt(arrCodServicio[i]));			
			double importe = persona * precio;
			entDetalle.setSsImporte(importe);
			lisDetalle.add(entDetalle);
						
			tot = tot + importe;
		}
		
		for(int i=0; i< arrCodJuego.length ; i++){
			Detalle_dia_Campo entDetalle = new Detalle_dia_Campo();
			entDetalle.setNuPersona(Integer.parseInt(arrJNuPersona[i]));
			double persona = entDetalle.getNuPersona();
			entDetalle.setTxComentario(arrJDescripcion[i]);
			double precio = negJuego.getPreciojuego(Integer.parseInt(arrCodJuego[i]));
			entDetalle.setSsPrecioPersona(precio);
			entDetalle.setCoJuego(Integer.parseInt(arrCodJuego[i]));
			double importe = persona * precio;
			entDetalle.setSsImporte(importe);
			
			lisDetalle.add(entDetalle);
			tot = tot + importe;
		}
		
		try {
			IdDiaCampo = negocio.insertar(1, entCampo.getFeDiaCampo(), entCampo.getNuTotalPersonas(), tot , entCampo.getCoClub(),1, lisDetalle);
		} catch (DAOExcepcion e) {
			return new ModelAndView("/error", "mensaje", e.getMessage());
		}
		
		mav.setViewName("redirect:confirmacion.html");
		
		return mav;
	}
	
	@RequestMapping(value = "/confirmacion", method = RequestMethod.GET)	
	protected ModelAndView confirmacion(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		
		return new ModelAndView("confirmacion");
	}
	
	@RequestMapping(value = "/mensajeAct", method = RequestMethod.GET)	
	protected ModelAndView mensajeActualizacion(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		
		return new ModelAndView("mensajeAct");
	}
	
	
}
